<template>
	<view>

	</view>
</template>

<script setup lang="ts">
	import { ref, reactive, onMounted } from 'vue'
	import { onLoad, onShow } from '@dcloudio/uni-app'
	import { useMainStore, useUserStore, usePermissionStore } from '@/store';
	const mainStore = useMainStore();
	const userStore = useUserStore();
	const permissionStore = usePermissionStore();

	// 获取工单权限、菜单数据
	// console.log(permissionStore.moduleTabbar);
	// console.log(permissionStore.activeModule);
	const moduleInfoAll = JSON.parse(JSON.stringify(permissionStore.moduleInfoAll));
	const moduleTabbar = permissionStore.moduleTabbar;

	if (moduleTabbar.length) {
		let findHomePage = moduleTabbar.find((item : any) => item.IsHomepage)

		if (!uni.$utils.isEmpty(findHomePage)) {
			uni.redirectTo({
				url: uni.$utils.replaceDispatchPath(findHomePage.AP_Link)
			})

		} else {

			uni.redirectTo({
				url: uni.$utils.replaceDispatchPath(moduleTabbar[0].AP_Link)
			})
		}
	} else {
		// 从有权限的菜单中寻找
		let findRedirectPage = getFirstRedirect(moduleInfoAll)

		if (uni.$utils.isEmpty(findRedirectPage)) {
			uni.$utils.layer.alert("请联系管理员，确认访问权限，再重新登录！", function () {
				// 清除自动登录缓存
				uni.setStorageSync('Automatic_Login', false);
				uni.redirectTo({
					url: "/pages/login/login"
				})
			})
		} else {
			uni.redirectTo({
				url: uni.$utils.replaceDispatchPath(findRedirectPage.AP_Link)
			})
		}

	}

	/**
	 * 高性能获取第一个JumpTypeName为"redirect"的数据
	 * 保留原生for循环的高性能，同时通过TypeScript提供类型安全
	 * @param data 目标数据源数组
	 * @returns 第一个符合条件的节点数据或null
	 */
	function getFirstRedirect(data : any) : any {
		// 外层遍历树节点，缓存长度提升性能
		for (let i = 0, len1 = data.length; i < len1; i++) {
			const nodes = data[i].Node;
			// 跳过空节点数组
			if (!nodes || !nodes.length) continue;

			// 内层遍历节点，缓存长度
			for (let j = 0, len2 = nodes.length; j < len2; j++) {
				const item = nodes[j];
				// 找到目标数据立即返回
				if (item.JumpTypeName === "redirect") {
					return item;
				}
			}
		}

		// 未找到返回null
		return null;
	}
</script>

<style lang="scss">
	page {
		background: transparent;
	}
</style>